/*
 * Camera.h
 *
 *  Created on: 19-dec.-2013
 *      Author: Axel
 */

#ifndef CAMERA_H_
#define CAMERA_H_

#include "algebraBasic.h"
#include "Transform.h"

/**
 * The camera class:
 * It controls the movement of the camera and handles occasional collision detection
 */
class Camera {
public:
	Camera();
	~Camera();

	void resetPos();
	void resetZoom();
	void resetRot();

	void move(float x, float y, float z);
	void scale(float x, float y, float z);
	void zoom(float percentage);
	void rotate(float aroundx, float aroundy, float aroundz);

	void setPerspective(float FOV, float width, float height, float zNear, float zFar);

	const Matrix4f* getCamera();

private:
	//holds the matrix data
	Transform* trans;

	//holds all data about the rotation, scaling, and position
	struct {
		float x;
		float y;
		float z;
		float scalex;
		float scaley;
		float scalez;
		float rotx;
		float roty;
		float rotz;
	} data;


};

#endif /* CAMERA_H_ */
